home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************************
- * "siscn.h"
- *-------------------------------------------------------------------------
- * Screen library
- * Copyright (c) 1993, TaroPYON
- *************************************************************************/
-
- #ifndef _SISCN_H
- #define _SISCN_H
-
- #ifndef _SITYPES_H
- # include <sitypes.h>
- #endif
- #ifndef _SIDEFS_H
- # include <sidefs.h>
- #endif
- #ifndef _EGB_MAC_H
- # include <egb_mac.h>
- #endif
- #ifndef _SIFTS_H
- # include <sifts.h>
- #endif
- #ifndef _SCN_IMGBLK_H
- # include <SCN/imgblk.h>
- #endif
- #ifndef _SCN_LAYER_H
- # include <SCN/layer.h>
- #endif
-
- #define SICOL_TILE_START (0x0100_0000) /* タイリング */
- #define SICOL_TILE_MAX (0x0001_0000) /* タイルパターン数 */
- #define SICOL_MIX_START (0x0200_0000) /* ミックス */
- #define SICOL_MIX_MAX (0x0001_0000)
-
- typedef struct _tiledat_t
- {
- struct _tiledat_t *next;
- COLOR_T colno; /* 色番号 */
- int pixel; /* ピクセル */
- int xb; /* 横方向のバイト数 */
- int yb; /* 縦方向のドット数 */
- char *data; /* データ */
- } TILEDAT_T;
-
- typedef struct
- {
- COLOR_T col; /* 色 */
- TILEDAT_T *tile; /* タイル */
- int mdWrt; /* 書き込みモード */
- } SCNFUNC_T;
-
-
- #define SISCN_LAYER_MAX (8)
-
- typedef struct
- {
- int pgWrt;
- int pgDsp;
- int numLayer; /* レイア数 */
- LAYER_T layer[SISCN_LAYER_MAX];
- LAYER_T *layerCrt; /* カレントレイア */
- } SISCN_T;
-
- extern SISCN_T *SiScn;
- extern char *EgbPtr;
- extern int FlgScnInit;
-
- /*----------------------------------------------------------------------*/
- extern int SCN_init( int mdScn );
- extern void SCN_sysTerm(void);
- extern int SCN_wrtPage( int page );
-
- extern void SCN_setSysPalette(void);
-
- extern int SCN_sysReinit(void);
-
- /*----------------------------------------------------------------------*/
- struct _scnline_t
- {
- struct
- { unsigned short n;
- short x1,y1,x2,y2;
- } egbPara;
- SCNFUNC_T fnc;
- };
-
- #define SCN_LINE(_x1,_y1,_x2,_y2,_mdWrt,_col) \
- { struct _scnline_t _para; \
- _para.egbPara.n = 2; \
- _para.egbPara.x1 = (_x1); \
- _para.egbPara.y1 = (_y1); \
- _para.egbPara.x2 = (_x2); \
- _para.egbPara.y2 = (_y2); \
- _para.fnc.col = (_col); \
- _para.fnc.tile = NULL; \
- _para.fnc.mdWrt = (_mdWrt); \
- SCN_line( &_para ); \
- }
-
- extern void SCN_line( struct _scnline_t *para );
-
- /*----------------------------------------------------------------------*/
- struct _scnbox_t
- {
- struct
- { short x1,y1,x2,y2;
- } egbPara;
- SCNFUNC_T fnc;
- };
- extern void SCN_box( struct _scnbox_t *para );
-
- #define SCN_BOX(_x1,_y1,_x2,_y2,_mdWrt,_col) \
- { struct _scnbox_t _para; \
- _para.egbPara.x1 = (_x1); \
- _para.egbPara.y1 = (_y1); \
- _para.egbPara.x2 = (_x2); \
- _para.egbPara.y2 = (_y2); \
- _para.fnc.col = (_col); \
- _para.fnc.tile = NULL; \
- _para.fnc.mdWrt = (_mdWrt); \
- SCN_box( &_para ); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _scnboxf_t
- {
- struct
- { short x1,y1,x2,y2;
- } egbPara;
- SCNFUNC_T fnc;
- };
-
- #define SCN_BOXF(_x1,_y1,_x2,_y2,_mdWrt,_col) \
- { struct _scnboxf_t _para; \
- _para.egbPara.x1 = (_x1); \
- _para.egbPara.y1 = (_y1); \
- _para.egbPara.x2 = (_x2); \
- _para.egbPara.y2 = (_y2); \
- _para.fnc.col = (_col); \
- _para.fnc.tile = NULL; \
- _para.fnc.mdWrt = (_mdWrt); \
- SCN_boxf( &_para ); \
- }
-
- extern void SCN_boxf( struct _scnboxf_t *para );
-
- /*----------------------------------------------------------------------*/
- struct _scnboxhol_t
- {
- FRAME_T fr;
- SCNFUNC_T fnc1;
- SCNFUNC_T fnc2;
- };
- extern void SCN_boxhol( struct _scnboxhol_t *para );
-
- #define SCN_BOXHOL(_x1,_y1,_x2,_y2,_mdWrt,_col1,_col2) \
- { struct _scnboxhol_t _para; \
- _para.fr.x1 = (_x1); \
- _para.fr.y1 = (_y1); \
- _para.fr.x2 = (_x2); \
- _para.fr.y2 = (_y2); \
- _para.fnc1.col = (_col1); \
- _para.fnc1.tile = NULL; \
- _para.fnc1.mdWrt = (_mdWrt); \
- _para.fnc2.col = (_col2); \
- _para.fnc2.tile = NULL; \
- _para.fnc2.mdWrt = (_mdWrt); \
- SCN_boxhol( &_para ); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _scnboxfhol_t
- {
- FRAME_T fr;
- SCNFUNC_T fnc1;
- SCNFUNC_T fnc2;
- SCNFUNC_T fnc3;
- };
- extern void SCN_boxfhol( struct _scnboxfhol_t *para );
-
- #define SCN_BOXFHOL(_x1,_y1,_x2,_y2,_mdWrt,_col1,_col2,_col3) \
- { struct _scnboxfhol_t _para; \
- _para.fr.x1 = (_x1); \
- _para.fr.y1 = (_y1); \
- _para.fr.x2 = (_x2); \
- _para.fr.y2 = (_y2); \
- _para.fnc1.col = (_col1); \
- _para.fnc1.tile = NULL; \
- _para.fnc1.mdWrt = (_mdWrt); \
- _para.fnc2.col = (_col2); \
- _para.fnc2.tile = NULL; \
- _para.fnc2.mdWrt = (_mdWrt); \
- _para.fnc3.col = (_col3); \
- _para.fnc3.tile = NULL; \
- _para.fnc3.mdWrt = (_mdWrt); \
- SCN_boxfhol( &_para ); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _scnboxcon_t
- {
- FRAME_T fr;
- int n;
- SCNFUNC_T fnc1;
- SCNFUNC_T fnc2;
- };
- extern void SCN_boxcon( struct _scnboxcon_t *para );
-
- #define SCN_BOXCON(_x1,_y1,_x2,_y2,_n,_mdWrt,_col1,_col2) \
- { struct _scnboxcon_t _para; \
- _para.fr.x1 = (_x1); \
- _para.fr.y1 = (_y1); \
- _para.fr.x2 = (_x2); \
- _para.fr.y2 = (_y2); \
- _para.n = (_n); \
- _para.fnc1.col = (_col1); \
- _para.fnc1.tile = NULL; \
- _para.fnc1.mdWrt = (_mdWrt); \
- _para.fnc2.col = (_col2); \
- _para.fnc2.tile = NULL; \
- _para.fnc2.mdWrt = (_mdWrt); \
- SCN_boxcon( &_para ); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _scnboxfcon_t
- {
- FRAME_T fr;
- int n;
- SCNFUNC_T fnc1;
- SCNFUNC_T fnc2;
- SCNFUNC_T fnc3;
- };
- extern void SCN_boxfcon( struct _scnboxfcon_t *para );
-
- #define SCN_BOXFCON(_x1,_y1,_x2,_y2,_n,_mdWrt,_col1,_col2,_col3) \
- { struct _scnboxfcon_t _para; \
- _para.fr.x1 = (_x1); \
- _para.fr.y1 = (_y1); \
- _para.fr.x2 = (_x2); \
- _para.fr.y2 = (_y2); \
- _para.n = (_n); \
- _para.fnc1.col = (_col1); \
- _para.fnc1.tile = NULL; \
- _para.fnc1.mdWrt = (_mdWrt); \
- _para.fnc2.col = (_col2); \
- _para.fnc2.tile = NULL; \
- _para.fnc2.mdWrt = (_mdWrt); \
- _para.fnc3.col = (_col3); \
- _para.fnc3.tile = NULL; \
- _para.fnc3.mdWrt = (_mdWrt); \
- SCN_boxfcon( &_para ); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _scnputc_t
- {
- FTSDAT_T *fts; /* フォント */
- SCNFUNC_T ffnc; /* 文字色 */
- SCNFUNC_T bfnc; /* 背景色 */
-
- POINT_T point; /* 座標 */
- int code; /* コード */
- int xs, ys;
-
- int md; /* ワーク */
- int mdWrt; /* ワーク */
- int clip; /* ワーク */
- };
- extern void SCN_putcSetup( struct _scnputc_t *para );
- extern void SCN_putc( struct _scnputc_t *para );
-
- #define SCN_PUTCSETUP(_para,_fts,_mdWrt,_col,_bac) \
- { \
- (_para)->fts = (_fts); \
- (_para)->ffnc.col = (_col); \
- (_para)->ffnc.tile = NULL; \
- (_para)->ffnc.mdWrt = (_mdWrt); \
- (_para)->bfnc.col = (_bac); \
- (_para)->bfnc.tile = NULL; \
- (_para)->bfnc.mdWrt = (_mdWrt); \
- SCN_putcSetup( _para ); \
- }
- #define SCN_PUTC(_para,_code,_x,_y) \
- { \
- (_para)->point.x = (_x); \
- (_para)->point.y = (_y); \
- (_para)->code = (_code); \
- SCN_putc( _para ); \
- }
-
- /*----------------------------------------------------------------------*/
- struct _scnputs_t
- {
- FTSDAT_T *fts; /* フォント */
- POINT_T point; /* 座標 */
- SCNFUNC_T ffnc; /* 文字色 */
- SCNFUNC_T bfnc; /* 背景色 */
- CONST char *s; /* 文字列 */
- };
- extern void SCN_puts( struct _scnputs_t *para );
-
- #define SCN_PUTS(_fts,_s,_x,_y,_mdWrt,_col,_bac) \
- { struct _scnputs_t _para; \
- _para.fts = (_fts); \
- _para.point.x = (_x); \
- _para.point.y = (_y); \
- _para.ffnc.col = (_col); \
- _para.ffnc.tile = NULL; \
- _para.ffnc.mdWrt = (_mdWrt); \
- _para.bfnc.col = (_bac); \
- _para.bfnc.tile = NULL; \
- _para.bfnc.mdWrt = (_mdWrt); \
- _para.s = (_s); \
- SCN_puts( &_para ); \
- }
-
- /*----------------------------------------------------------------------*/
- typedef struct
- {
- int pixel;
- size_t siz;
- struct
- { char *dat;
- unsigned short seg;
- short x1, y1, x2, y2;
- } egbPara;
- short _dmy1;
- } SCNBLK_T;
-
- extern SCNBLK_T *SCN_getblk( FRAME_T *para );
- extern int SCN_dspblk( SCNBLK_T *blk, int x, int y );
- extern int SCN_putblk( SCNBLK_T *blk );
-
- /*----------------------------------------------------------------------*/
- struct _scnptn_t /* モノクロデータ表示用 */
- {
- struct
- { char *dat;
- unsigned short ds;
- short x1, y1, x2, y2;
- } egbPara;
- short _dmy1;
- SCNFUNC_T ffnc; /* 文字色 */
- SCNFUNC_T bfnc; /* 背景色 */
- };
-
- #define SCN_PUTPTN(_dat,_ds,_x1,_y1,_x2,_y2,_mdWrt,_col,_bac) \
- { struct _scnptn_t _para; \
- _para.egbPara.dat = (_dat); \
- _para.egbPara.ds = (_ds); \
- _para.egbPara.x1 = (_x1); \
- _para.egbPara.y1 = (_y1); \
- _para.egbPara.x2 = (_x2); \
- _para.egbPara.y2 = (_y2); \
- _para.ffnc.col = (_col); \
- _para.ffnc.tile = NULL; \
- _para.ffnc.mdWrt = (_mdWrt); \
- _para.bfnc.col = (_bac); \
- _para.bfnc.tile = NULL; \
- _para.bfnc.mdWrt = (_mdWrt); \
- SCN_putptn( &_para ); \
- }
- extern void SCN_putptn( struct _scnptn_t *para );
-
- /*----------------------------------------------------------------------*/
- struct _scnimg_t
- {
- int pixel;
- size_t siz;
- struct
- { char *dat;
- unsigned short ds;
- short x1, y1, x2, y2;
- } egbPara;
- short _dmy1;
- SCNFUNC_T ffnc; /* 文字色 */
- SCNFUNC_T bfnc; /* 背景色 */
- };
-
- #define SCN_PUTIMG(_pixel,_siz,_dat,_ds,_x1,_y1,_x2,_y2,_mdWrt,_col,_bac) \
- { _para.pixel = (_pixel); \
- _para.siz = (_siz); \
- _para.egbPara.dat = (_dat); \
- _para.egbPara.ds = (_ds); \
- _para.egbPara.x1 = (_x1); \
- _para.egbPara.y1 = (_y1); \
- _para.egbPara.x2 = (_x2); \
- _para.egbPara.y2 = (_y2); \
- _para.ffnc.col = (_col); \
- _para.ffnc.tile = NULL; \
- _para.ffnc.mdWrt = (_mdWrt); \
- _para.bfnc.col = (_bac); \
- _para.bfnc.tile = NULL; \
- _para.bfnc.mdWrt = (_mdWrt); \
- SCN_putimg( &_para ); \
- }
- #define SCN_PUTIMGPTN(_img,_x,_y,_mdWrt,_col,_bac) \
- { struct _scnimg_t _para; \
- _para.pixel = (_img)->pixel; \
- _para.siz = (_img)->siz; \
- _para.egbPara.dat = (_img)->dat; \
- _para.egbPara.ds = getds(); \
- _para.egbPara.x1 = _x; \
- _para.egbPara.y1 = _y; \
- _para.egbPara.x2 = _para.egbPara.x1 + (_img)->xs - 1; \
- _para.egbPara.y2 = _para.egbPara.y1 + (_img)->ys - 1; \
- _para.ffnc.col = (_col); \
- _para.ffnc.tile = NULL; \
- _para.ffnc.mdWrt = (_mdWrt); \
- _para.bfnc.col = (_bac); \
- _para.bfnc.tile = NULL; \
- _para.bfnc.mdWrt = (_mdWrt); \
- SCN_putimg( &_para ); \
- }
- extern void SCN_putimg( struct _scnimg_t *para );
-
- /*----------------------------------------------------------------------*/
- struct _scnscroll_t
- {
- FRAME_T fr;
- int x, y;
- };
-
- extern void SCN_scroll(struct _scnscroll_t *para);
-
- #define SCN_SCROLL(_x1,_y1,_x2,_y2,_xd,_yd) \
- { struct _scnscroll_t _para; \
- _para.fr.x1 = (_x1); _para.fr.y1 = (_y1); \
- _para.fr.x2 = (_x2); _para.fr.y2 = (_y2); \
- _para.x = (_xd); \
- _para.y = (_yd); \
- SCN_scroll(&_para); \
- }
-
- /*----------------------------------------------------------------------*/
- extern void SCN_viewGet( FRAME_T *view );
- extern void SCN_viewSet( FRAME_T *view );
-
- extern int SCN_palette( int vsync, int col, PLT_T *plt );
- extern COLOR_T SCN_tile_getNewColNo(void);
- extern int SCN_tile_setDat( TILEDAT_T *tile );
- extern TILEDAT_T *SCN_tile_alloc( int pixel, int xb, int yb, CONST char *dat );
- extern TILEDAT_T *SCN_tile_get( COLOR_T col );
- extern void SCN_tile_free( COLOR_T col );
-
- #define SCNEGB_TILESET(_c,_tile) \
- EGB_tilePattern(EgbPtr,(_c),(_tile)->xb,(_tile)->yb,(_tile)->data)
-
- /*----------------------------------------------------------------------*/
- #define SIMIXTILE_MAX (32)
-
- #define MIXCOL_NORMAL (0x00)
- #define MIXCOL_STD1 (0x01)
- #define MIXCOL_CROSS1 (0x10)
- #define MIXCOL_CROSS2 (0x11)
-
- extern COLOR_T SCN_tile_mixCol( int bufno, int typ, COLOR_T c1, COLOR_T c2 );
-
- /*----------------------------------------------------------------------*/
- extern COLOR_T SCN_tile_newMixCol( COLOR_T col, int typ, COLOR_T c1, COLOR_T c2 );
-
- /*----------------------------------------------------------------------*/
- extern void scnTile_dotset( TILEDAT_T *tile, int x, int y, COLOR_T col);
- extern COLOR_T SCN_tile_makeCol( COLOR_T col, TILEDAT_T *(*func)(COLOR_T *), COLOR_T *coltbl );
- extern TILEDAT_T *scn_tile_allocDat( int xs, int ys);
-
- extern TILEDAT_T *scn_mktile_normal(COLOR_T *coltbl);
- extern TILEDAT_T *scn_mktile_check1(COLOR_T *coltbl);
-
- /*----------------------------------------------------------------------*/
-
- #endif
-